package com.shjzit.loglib.db.dao;

import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;

import com.shjzit.loglib.db.entity.LogEntity;

import java.util.List;

/**
 * DESC  从大到小排序  降序排列
 * ACS   正从小到大排序 升序排列
 */
@Dao
public interface LogDao {


    ////////////////////////////////////////////////////////////////////////////////////////////////
    //  数据库操作：增加
    ////////////////////////////////////////////////////////////////////////////////////////////////

    /**
     * 新增日志
     *
     * @param logEntities
     */
    @Insert
    void insert(LogEntity... logEntities);

    ////////////////////////////////////////////////////////////////////////////////////////////////
    //  数据库操作：删除
    ////////////////////////////////////////////////////////////////////////////////////////////////

    /**
     * 删除日志
     *
     * @param logEntities
     */
    @Delete
    void deleteLogs(LogEntity... logEntities);

    ////////////////////////////////////////////////////////////////////////////////////////////////
    //  数据库操作：修改
    ////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////
    //  数据库操作：查询
    ////////////////////////////////////////////////////////////////////////////////////////////////

    /**
     * 查询所有日志
     *
     * @return
     */
    @Query("SELECT * FROM tb_log ORDER BY create_time ASC")
    List<LogEntity> queryAllLogs();

    /**
     * 查询第一个日志
     *
     * @return
     */
    @Query("SELECT * FROM tb_log ORDER BY create_time ASC LIMIT 1")
    LogEntity queryFirstLog();

    /**
     * 查询500条超时的日志
     *
     * @return
     */
    @Query("SELECT * FROM tb_log WHERE create_time < :createAt LIMIT 500")
    List<LogEntity> queryFirstOvertimeLog(long createAt);
}
